# -*- coding:utf-8 -*-

from app import db


class Addition(db.Model):						#此表用于记录每日新增的申请,用于后续统计
	__tablename__ = 'addition'
	id = db.Column(db.Integer, primary_key=True)		
	user_type = db.Column(db.SmallInteger)				#相关账户的类型，1为商家，2为个人
	source = db.Column(db.SmallInteger)				#来源，0为PC端，1为移动端
	add_type = db.Column(db.String(45))				#新增的类型，car为车源，account为账户，loan为贷款，buy为购车，rent为租赁，finance为金融，service为服务
	date = db.Column(db.Date)					#申请的日期

	def save(self):
		db.session.add(self)
		db.session.commit()


class Daily_Statistic(db.Model):					#此表用于记录每日业务申请的统计情况，统计的数据来源于Addition表
	__tablename__ = 'daily_statistic'
	id = db.Column(db.Integer, primary_key=True)		
	count = db.Column(db.Integer)					#申请总数
	user_type = db.Column(db.SmallInteger)				#申请人的类型，1为商家，2为个人
	source = db.Column(db.SmallInteger)				#申请的来源，0为PC端，1为移动端
	stats_type = db.Column(db.String(45))				#统计对象，buy，rent，finance，service，account，car，loan
	date = db.Column(db.Date)					#统计的日期，该日期不是指统计时的日期，而是被统计的日期
	month = db.Column(db.String(6))					#所属的年月，例如统计日期为20170105，则该字段为20171，该字段主要是为了方便按月份进行统计

	def save(self):
		db.session.add(self)
		db.session.commit()


class Stats_Cache(db.Model):						#该表用于缓存统计的结果，避免重复计算
	__tablename__ = 'statistic_cache'
	id = db.Column(db.Integer, primary_key=True)
	pc_count = db.Column(db.Text)					#PC端总数，形如"20,30,40,50"，代码中再将其转为数组，返回给前端装填图表
	mobile_count = db.Column(db.Text)				#移动端总数，同上
	total = db.Column(db.Text)					#整体总数，同上
	dates = db.Column(db.Text)					#数量对应的日期，形如"2017/02/01,2017/02/03"，代码中再将其转为数组，返回给前端装填图表

	#以下为获取图表数据时的参数，不同的参数组合对应不同的图表数据，这也是缓存的意义
	#针对同一组参数，只需计算一次，后续直接拿以上的数据返回
	user_type = db.Column(db.SmallInteger)				#相关账户的类型，1为商家，2为个人
	stats_type = db.Column(db.String(45))				#统计的类型，car为车源，account为账户，loan为贷款，buy为购车，rent为租赁，finance为金融，service为服务
	date = db.Column(db.SmallInteger)				#时间段，7,30,365分别对应一周，一月，一年
	cache_date = db.Column(db.Date)					#缓存存入的日期
	
	def save(self):
		db.session.add(self)
		db.session.commit()

